张模秦,2011-02-23:测试的执行方式必须符合quartz定时调度原理。调整系统时间不能有执行周期的跨度。
quartz定时调度的机制(供测试参考):CronTrigger 总是在给定的时间触发然后计算它下次触发的时间。如果在给定的日期内没有该时间,则触发器将会被忽略,如果在给定的日期内该时间发生了两次,它只触发一次。因为是在第一次触发发生后计算当天下次触发的时间。
系统正常运行时将不会有往前或往后调整的情况。
周期性任务的激活时间已修改为激活日期的凌晨2:00:00,锁定时间在激活时间的N天之后,例如:激活日期为2011-2-25 2:00:00,锁定时间在2天之后为2011-2-27 2:00:00。修改后的代码将于今天(2011/02/23)17:30之后合并部署,请在这个时间点之后再测试该项。
请参照下列的案例测试任务同时生成和锁定:
方案一:同一个模板的多个任务,在同一天激活同一天锁定的情况。
1、服务器时间(假设当前为2011-02-01周二)正常,并且服务启动是在该时间上。
2、创建多机构的任务模板,激活规则为每周第四天激活,激活后的第1个自然日锁定。
3、将时间调整到2011-02-02(周三)01:59:40,20秒之后查看生成了该模板的多个任务。
4、将时间调整到2011-02-03(周四)01:59:40,20秒之后查看生成的多个任务都被锁定。
方案二:不同模板的任务在同一天激活,同一天锁定的情况。
1、服务器时间(假设当前为2011-02-01周二)正常,并且服务启动是在该时间上。
2、创建6种周期的任务模板如下:
日: 激活规则为每日,激活后的第1个自然日锁定(将于2011/02/02 02:00:00激活,2011/02/03 02:00:00锁定);
周:激活规则为每周第四天,激活后的第一个自然日锁定(将于2011/02/02 02:00:00激活,2011/02/03 02:00:00锁定);
旬:激活规则为每旬第二天,激活后的第一个自然日锁定(将于2011/02/02 02:00:00激活,2011/02/03 02:00:00锁定);
月:激活规则为每月第二天,激活后的第一个自然日锁定(将于2011/02/02 02:00:00激活,2011/02/03 02:00:00锁定);
季:激活规则为每季第二个月的第二天,激活后的第一个自然日锁定(将于2011/02/02 02:00:00激活,2011/02/03 02:00:00锁定);
年:激活规则为每年第二个月的第二天,激活后的第一个自然日锁定(将于2011/02/02 02:00:00激活,2011/02/03 02:00:00锁定);
3、将时间调整到2011-02-02(周三) 1:59:40,20秒之后查看生成了6种周期的任务。
4、将时间调整到2011-02-03(周四) 1:59:40,20秒之后查看6种周期的任务都锁定。